package com.youtills.resource;

import java.util.Date;
import java.util.List;

/**
 * TODO - !!!doc me!!!
 *
 * @author ravi.chiluveru
 * @since 23.0 (8/14/14)
 */
public interface Attribute<T> {

    String getName();

    final class StringAttribute extends BaseAttribute<String, StringAttribute> {
        public StringAttribute(String name) {
            super(name);
        }
    }

    final class LongAttribute extends BaseAttribute<Long, LongAttribute>{
        public LongAttribute(String name) {
            super(name);
        }
    }

    final class DateAttribute extends BaseAttribute<Date, DateAttribute>{
        public DateAttribute(String name) {
            super(name);
        }
    }

    final class IntegerAttribute extends BaseAttribute<Integer, IntegerAttribute>{
        public IntegerAttribute(String name) {
            super(name);
        }
    }

    final class CurrencyAttribute extends BaseAttribute<Double, CurrencyAttribute>{
        public CurrencyAttribute(String name) {
            super(name);
        }
    }

    final class ListResourceAttribute<T extends Resource> extends BaseAttribute<List<T>, ListResourceAttribute<T>> {
        public ListResourceAttribute(String name) {
            super(name);
        }

        @Override
        public String getMysqlColumnName() {
            return null;
        }
    }

}
